
package dispositivos;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

/**
 *
 * @author Santy
 */
public class Fichero {
    
    /**
     * Lee linea a linea un fichero de texto que le pasamos por una ruta, y lo guarda en la variable resultado
     *
     * @param ruta
     * @return resultado
     */
    public String leer(String ruta) 
    {
        
        String resultado = "";
        
        try {
            
            BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(ruta)));
            
            String linea;
                      
            while ((linea = br.readLine()) != null) {
                resultado+= linea + "\n";
            }
            
        } catch (IOException ex) {
            ex.printStackTrace(System.err);
        }
        
        return resultado;
        
    }
    
        /**
     * Escribe el contenido de una variable que nosotros le pasemos en un fichero de una ruta que también le tenemos que pasar
     * 
     * @param contenido
     * @param ruta
     */
    public void escribir(String contenido, String... ruta) 
    {
              
        try {
            
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(ruta[0])));
            
            bw.write(contenido);
                
            }
            
        catch (IOException ex) {
            ex.printStackTrace(System.err);
        }
      
    }
    

    /**
     * Esta función coge un fichero que contiene URLS de una ruta que le pasamos, va leyéndolo linea a linea y utiliza la función escribir para ir 
     * escribiendo el código html de cada URL que lee en un fichero, al que llamará Modelo1, Modelo2...
     * 
     * @param ruta
     * @return resultado
     */
    public String leeryEscribir(String ruta) 
    {
        
        String resultado = "";
        Fichero f = new Fichero();
        DispositivoURL u = new DispositivoURL();
        
        try {
            
            BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(ruta)));
            
            String linea;
                        
            int i=1;    //Va a determinar el numero de fichero
            
            while ((linea = br.readLine()) != null) {
                
                f.escribir(u.leer(linea), "./Modelos/Modelo"+i+".html"); //Le digo que lea la URL y la guarde en un fichero.
                i++;             
            }
            
        } catch (IOException ex) 
            {
            ex.printStackTrace(System.err);
            }
        
        return resultado;
        
        }
    
    /**
     * Nos devuelve el numero de lineas de un fichero, para saber el numero de URLS que tenemos que leer.
     * @param ruta
     * @return fin
     */
    public int finFichero(String ruta)
    {
     
        int fin=0;     
        
        try {
            
            BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(ruta)));
            
            String linea;
            
            while ((linea = br.readLine()) != null) {
                fin++;
            }
            
        } catch (IOException ex) 
            {
            ex.printStackTrace(System.err);
            }
        
        return fin;
    }  
   
    
}
